CDK を用いて信頼ポリシーのプリンシパル句に全ての AWS アカウントのアイデンティティを指定する方法

CDK を用いて信頼ポリシーのプリンシパル句に全ての AWS アカウントのアイデンティティを指定する方法

iam.AnyPrincipal をご利用ください。
Clock Icon2024.11.04

困っていること

ワイルドカードによる制限をかけるため、CDK を用いて以下のようなプリンシパル句に全ての AWS アカウントのアイデンティティを指定し Condition 要素で制限をかける信頼ポリシー作成したいです。

https://repost.aws/ja/knowledge-center/iam-trust-policy-error

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*"
        }
      }
    }
  ]
}

どのように実装を行えばいいですか?

どう対応すればいいの?

iam.AnyPrincipal をご利用ください。

CDK にて以下のような全ての AWS アカウントのアイデンティティを指定するプリンシパル句を実装いただくためには、iam.AnyPrincipal 関数をご利用いただく必要がございます。

"Principal": {
        "AWS": "*"
      },

https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.AnyPrincipal.html

一方で、上記実装のようなプリンシパル句は存在する全ての AWS アカウントを信頼する記述となります。
全ての AWS アカウントのアイデンティティを指定するプリンシパル句を持つ信頼ポリシーを作成される際は、誰でもアクセス可能な状況とならないよう別途 Condition 要素などを用いて制限を行ってください。

Condition 要素は CDK で実装される場合、withConditions 関数をご利用いただくことで実装が可能です。

https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.PrincipalWithConditions.html

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.